# -*- coding: utf-8 -*-
"""
Created on Wed Aug 16 10:45:34 2023

@author: skunk69
"""

import json

chinese_name = u'纽芬兰纪念大学幸福度量表'
english_name = 'Memorial University of Newfoundland Scale of Happiness'
abbreviation = 'MUNSH'
category = u'生活质量与满意度量表'

outline = u"""《纽芬兰纪念大学幸福度量表》（Memorial University of Newfoundland Scale of Happiness, MUNSH）是由Kozma和Stones于20世纪80年代初将ABS、生活满意指数Z和费城老年中心量表综合修改成一个新的量表，专用于老年群体。
MUNSH在我国有周建初和杨彦春两种译本，没有可靠的国内信效度资料。刘仁刚、龚耀先参考这两种译本，对该量表做了修订，并发现了老年人主观幸福感的多种影响因素。"""

instruction = u"""我们想问一些关于您的日子过得怎么样的问题。请根据您的情况选择回答：是或否或不一定。请尽量不要回答“不一定”。在最近一段时间里，您是否感到："""

with open('MUNSH.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('、',maxsplit=1)
    items[key] = value.strip()

reverse_items = []
scales = [u'正性因子',u'负性因子']
scales_items = [
    [1,2,3,4,10,12,14,15,20,21,23,24],# 正性因子 
    [5,6,7,8,9,11,13,16,17,18,19,22],# 负性因子
    ]

# check scales_items
print(f'scale length={[len(l) for l in scales_items]}')

check = []
for l in scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,25)}
print(f'complementary set= {check_set}')

factors = []
factors_scales = []
rating = [u'是',u'不一定',u'否']
score_rules = list(range(2,-1,-1))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""MUNSH是一个现状自评量表。"""

reliability = u"""测量学指标所用样本为男性不小于60岁、女性不小于55岁的老年城市居民，包括医院退休职工、工厂退休职工、某老干部活动中心学员、某老年大学学员、某医院精神科门诊或住院病人的父亲或母亲、某医院老年科高干病房住院病人、某医院内科住院慢性病人的家属等。
内部一致性分析表明，全量表具有很好的内部一致性，一致性系数Chronbach α为0.8664。
正性因子和负性因子的α均大于0.8。间隔一周后的重测信度，全量表为0.7577，正性因子0.7366，负性因子为0.7761，P值均小于0.01。"""
validity = u"""因素分析表明，除了条目1之外，旋转后的因素1和因素2基本上代表了正性因子和负性因子。
多元相关分析表明，总分与艾森克个性问卷的外向性、婚姻质量、兴趣及收入呈显著正相关，与艾森克个性问卷的神经质呈显著负相关；正性因子与艾森克个性问卷的外向性、婚姻质量、兴趣呈显著正相关，与艾森克个性问卷的神经质和为子女操心呈显著负相关；负性因子与艾森克个性问卷的的神经质和退休应激呈显著正相关，与艾森克个性问卷的外向性、兴趣和受教育程度呈显著负相关。其中，相关性最为显著的是艾森克个性问卷的外向性和神经质。这些结果说明MUNSH有一定的效度。
尽管如此，条目1、19和22的信效度却有些不如人意。可能的原因是：问题的针对性不强，问题与预想的内容有差异，第22条“艰苦生活”不符合中国人的传统观念，并不反映情感的负性方面。这些问题需要在使用MUNSH时多加注意。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""正性因子得分减去负性因子得分即得到总分。"""

applications = u"""从MUNSH使用的情况来看，正性因子的得分范围2~24，负性因子的得分范围为0~22，而总分的得分范围18~24，较好地反映了老年人的主观幸福感或生活满意度。
另外，汪文新等运用杨彦春等的译本，量表的内部一致性和重测信度均可，但是因子的结构效度差，并且部分条目存在这样那样的问题，与刘仁刚等在修订MUNSH时遇到的情形相似。总而言之，刘仁刚等修订后的MUNSH译本较优。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)